package gui;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JButton;

import java.awt.Color;
import java.util.ArrayList;

import javax.swing.SwingConstants;

import negocio.Clase;
import negocio.ClaseControlador;
import negocio.Cursada;
import negocio.CursadaControlador;
import negocio.Usuario;
import negocio.UsuarioControlador;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class AsignarInstructor extends JFrame {

	private JPanel contentPane;
	JLabel lblError;
	JComboBox comboInstructores;
	ArrayList<Usuario> instructoresCombo;
	Cursada cursada;
	ArrayList<Clase> clases;
	Cursadas padreCursadas;
	AsignarInstructor padreAsignarInstructor = this;
	Instructores instructores=null;
	
	public AsignarInstructor(Cursada cursada, Cursadas padreCursadas) {
		 addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e){
                     padreCursadas.nullAsignarInstructor();
             }
     });
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 314, 185);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		this.setTitle("Asignar Instructor");
		this.cursada=cursada;
		this.padreCursadas=padreCursadas;
		this.clases= ClaseControlador.getClases(cursada);
		
		JLabel lblInstructorAAsignar = new JLabel("Instructor a asignar");
		lblInstructorAAsignar.setBounds(10, 11, 105, 14);
		contentPane.add(lblInstructorAAsignar);
		
		comboInstructores = new JComboBox();
		comboInstructores.setBounds(125, 11, 164, 20);
		contentPane.add(comboInstructores);
		
		JButton btnNewButton = new JButton("Ver instructores...");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(instructores==null)
				{
					instructores=new Instructores(null,null, padreAsignarInstructor);
					instructores.setVisible(true);
				}
			}
		});
		btnNewButton.setBounds(125, 42, 164, 23);
		contentPane.add(btnNewButton);
		
		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		btnCancelar.setBounds(200, 113, 89, 23);
		contentPane.add(btnCancelar);
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(comboInstructores.getSelectedIndex()!=-1)
				{
					if(validarInstructor())
					{
						for (Clase c:clases)
						{
							ClaseControlador.setInstructor(c, instructoresCombo.get(comboInstructores.getSelectedIndex()));
						}
						cursada.setInstructor(instructoresCombo.get(comboInstructores.getSelectedIndex()));
						CursadaControlador.setInstructor(cursada, instructoresCombo.get(comboInstructores.getSelectedIndex()));
						padreCursadas.nullAsignarInstructor();
						padreCursadas.llenarTabla();
						dispose();
					}
					else
					{
						lblError.setText("Instructor no disponible. Seleccione otro.");
						lblError.setVisible(true);
					}
				}
				else
				{
					lblError.setText("Por favor seleccione un instructor");
				}
			}
		});
		btnAceptar.setBounds(101, 113, 89, 23);
		contentPane.add(btnAceptar);
		
		lblError = new JLabel("Error");
		lblError.setHorizontalAlignment(SwingConstants.CENTER);
		lblError.setForeground(Color.RED);
		lblError.setBounds(10, 76, 279, 14);
		contentPane.add(lblError);
		lblError.setVisible(false);
		llenarComboInstructores();
	}
	
	public void llenarComboInstructores()
	{
		instructoresCombo=UsuarioControlador.getInstructores();
		for(Usuario i:instructoresCombo)
		{
			comboInstructores.addItem(i.getNombre()+" "+i.getApellido());
		}
		comboInstructores.setSelectedIndex(-1);
	}
	
	public boolean validarInstructor()
	{
		if(comboInstructores.getSelectedIndex()!=-1)
		{
			Usuario instructorSeleccionado=instructoresCombo.get(comboInstructores.getSelectedIndex());
			return instructorSeleccionado.InstructorHabilitadoClase(clases);
		}
		else
			return true;
	}
}
